package jmine.tec.persist.naturalkey;

/**
 * Conversor de natural key, converte o objeto passado pelo usuário do DAO para um objeto do mesmo tipo correto.
 * 
 * @author lundberg
 * @param <T> tipo de objeto resultante da conversão
 */
public interface NaturalKeyConverter<T> {

    /**
     * Converte o objeto passado como parâmetro para o tipo correto.
     * 
     * @param naturalKey naturalKey
     * @return naturalKey convertida para o tipo correto.
     * @throws InvalidNaturalKeyException caso a conversão não seja possível
     */
    T convert(Object naturalKey) throws InvalidNaturalKeyException;

    /**
     * @return tipo de objeto resultante da conversão
     */
    Class<T> getTargetClass();
}
